package com.learn.finished;

/*
744. 寻找比目标字母大的最小字母

给你一个排序后的字符列表 letters ，列表中只包含小写英文字母。另给出一个目标字母 target，请你寻找在这一有序列表里比目标字母大的最小字母。

在比较时，字母是依序循环出现的。举个例子：

如果目标字母 target = 'z' 并且字符列表为 letters = ['a', 'b']，则答案返回 'a'
输入: letters = ["c", "f", "j"]，target = "a"
输出: "c"
输入: letters = ["c","f","j"], target = "d"
输出: "f"
 */
public class num_744 {
    public static char nextGreatestLetter(char[] letters, char target) {
        //本质上，就是对target进行定位，那么，可以从头开始遍历，直到找到结果
        for (char letter : letters) {
            if (letter >= target) {
                return letter;
            }
        }
        return letters[0];
    }
    public static char nextGreatestLetter1(char[] letters, char target) {
        //同样的，提到查找，就可以向算法方面联想，可以使用二分查找
        int left=0,right=letters.length-1;
        while (left < right) {
            int mid=left+right>>1;
            if (letters[mid]>target){
                right=mid;
            }else {
                left=mid+1;
            }
        }
        return letters[right]>target?letters[right]:letters[0];
    }

    public static void main(String[] args) {
        char a='a';
        char b='b';
        System.out.println(a<b);
    }
}
